# -*- coding: latin-1 -*-
import sys, os
from PyQt4.QtGui import QDataWidgetMapper, QMessageBox,  QDialog,  QColor,  QPalette
from PyQt4.QtCore import SIGNAL,  Qt,  QDate,  QObject

sys.path.append("../")

from vista.altaDuenio_vista import Ui_FormAltaDuenio
from vista.historiaClinica_vista import Ui_FormHistoriaClinica
from altaMascota_controlador import altaMascota_controlador
from editarMascota_controlador import editarMascota_controlador
from historiaClinica_controlador import historiaClinica_controlador
from detalleCuenta_controlador import detalleCuenta_controlador
from entrega_controlador import entrega_controlador
from conexion import conexion
from modelo.duenio_modelo import duenio_modelo
from modelo.mascota_modelo import mascota_modelo
from modelo.debe_modelo import debe_modelo
from modelo.haber_modelo import haber_modelo
from cronograma_controlador import cronograma_controlador
from modelo.cronograma_modelo import cronograma_modelo

DEBUG = False

class altaDuenio_controlador(Ui_FormAltaDuenio):
    def __init__(self,  modelo, seleccionado):
        self.widget = QDialog()
        self.setupUi(self.widget)
        # Connections
        self.widget.connect(self.pushButtonAgregarMascota, SIGNAL("clicked()"), 
             		    self.agregarMascota)        
        self.widget.connect(self.pushButtonBajaMascota, SIGNAL("clicked()"),
                            self.bajaMascota)
        self.widget.connect(self.pushButtonGuardar, SIGNAL("clicked()"),
                            self.guardar)
        self.widget.connect(self.pushButtonModificarCliente, SIGNAL("clicked()"),
                            self.activarCamposCliente)
        self.widget.connect(self.tableViewMascota, SIGNAL("doubleClicked(QModelIndex)"), self.cargarHistoriaClinica)
        self.widget.connect(self.tableViewMascota, SIGNAL("clicked(QModelIndex)"), self.activarModificarBorrar)
        self.widget.connect(self.pushButtonModificar, SIGNAL("clicked()"), 
             		    self.modificarMascota)    
        self.widget.connect(self.pushButtondetalle, SIGNAL("clicked()"), 
             		    self.detalleCuenta)    
        self.widget.connect(self.pushButtonentregas, SIGNAL("clicked()"), 
             		    self.entrega)    
        self.widget.connect(self.pushButtontareas, SIGNAL("clicked()"), 
             		    self.irATareas)   
        #modelo
        self.duenio = modelo
        self.mascota=mascota_modelo()
        #mapper
        self.mapper = QDataWidgetMapper()
        self.mapper.setSubmitPolicy(QDataWidgetMapper.ManualSubmit)
        self.mapper.setModel(self.duenio.model)
        self.mapper.addMapping(self.lineEditapellido, self.duenio.APELLIDO)
        self.mapper.addMapping(self.lineEditnombre, self.duenio.NOMBRE)
        self.mapper.addMapping(self.lineEditemail,  self.duenio.EMAIL)
        self.mapper.addMapping(self.lineEdittelefono,  self.duenio.TELEFONO)
        self.mapper.addMapping(self.lineEdittelefono,  self.duenio.TELEFONO)
        self.mapper.addMapping(self.lineEditdomicilio,  self.duenio.DOMICILIO)
        self.mapper.addMapping(self.labelIdDuenio,  self.duenio.ID,  "text")
        self.seleccionado = seleccionado
        self.tableViewMascota.setModel(self.mascota.model)
        if seleccionado != -1:
            self.record = self.duenio.model.record(seleccionado.row())
            self.id_duenio = self.record.value("id_duenio").toInt()[0]
            self.mascota.listarMascotas(self.id_duenio)
            self.mapper.setCurrentModelIndex(seleccionado) 
            self.mostrarSaldo()
        else:
            self.activarCamposCliente()
            row = self.duenio.model.rowCount()
            self.duenio.model.insertRow(row)
            self.mapper.setCurrentIndex(row)
            self.mascota.listarMascotas(self.duenio.proximoId())
        self.tableViewMascota.setColumnHidden(self.mascota.ID, True)
        self.tableViewMascota.setColumnHidden(self.mascota.ID_DUENIO, True)
        self.ajustarDatosTabla()
    
    def irATareas (self):
        if DEBUG : print "apreto el boton cronograma"
        cronogramaModelo=cronograma_modelo()
        self.ui = cronograma_controlador(cronogramaModelo)
        self.ui.widget.setAttribute(Qt.WA_DeleteOnClose)
        self.ui.widget.showMaximized() 
        
    def ajustarDatosTabla(self):
        self.tableViewMascota.resizeColumnsToContents()
        self.tableViewMascota.setHorizontalHeader(self.tableViewMascota.horizontalHeader().setStretchLastSection(True))
        
    def agregarMascota(self):
        if DEBUG: print "apreto el boton agregarMascota"
        if self.labelIdDuenio.text() == "":
           if self.guardar():
             idDuenio = self.duenio.ultimoId()
             self.ui = altaMascota_controlador(self.mascota, idDuenio)
             self.ui.widget.setAttribute(Qt.WA_DeleteOnClose)
             self.ui.widget.showMaximized()  
          #   QObject.connect(self.ui.widget,  SIGNAL("destroyed()"), self.ajustarDatosTabla)  
        else:
            idDuenio = self.record.value("id_duenio").toInt()[0]
            self.ui = altaMascota_controlador(self.mascota, idDuenio)
            self.ui.widget.setAttribute(Qt.WA_DeleteOnClose)
            self.ui.widget.showMaximized()
            QObject.connect(self.ui.widget,  SIGNAL("destroyed()"), self.ajustarDatosTabla)  
            self.ajustarDatosTabla()
        self.pushButtonAgregarMascota.setFocus()
        self.ajustarDatosTabla()
            
    def cargarHistoriaClinica(self):
        seleccionado=self.tableViewMascota.selectedIndexes()[0]
        self.ui = historiaClinica_controlador(self.mascota, seleccionado, self.labelsaldo)
        self.ui.widget.showMaximized()
        self.mostrarSaldo()
    
    def activarCamposCliente(self):
        self.lineEditapellido.setEnabled(True)    
        self.lineEditnombre.setEnabled(True)    
        self.lineEditdomicilio.setEnabled(True)    
        self.lineEdittelefono.setEnabled(True)    
        self.lineEditemail.setEnabled(True) 
        self.pushButtonModificarCliente.setEnabled(False)
        self.lineEditapellido.setFocus()
    
    def activarModificarBorrar(self):
        self.pushButtonModificar.setEnabled(True)    
        self.pushButtonBajaMascota.setEnabled(True)    

    def desactivarModificarBorrar(self):
        self.pushButtonModificar.setEnabled(False)    
        self.pushButtonBajaMascota.setEnabled(False)    

    def modificarMascota(self):
        seleccionado=self.tableViewMascota.selectedIndexes()[0]
        if seleccionado.row() >= 0:
            self.ui = editarMascota_controlador(self.mascota, seleccionado)
            self.ui.widget.setAttribute(Qt.WA_DeleteOnClose)
            self.ui.widget.showMaximized()
            QObject.connect(self.ui.widget,  SIGNAL("destroyed()"), self.ajustarDatosTabla)
            self.desactivarModificarBorrar()
        else:
             QtGui.QMessageBox.critical(None,  "Seleccione una mascota", "Debe seleccionar la mascota que desea modificar")        
        self.ajustarDatosTabla()             
    
    def detalleCuenta(self):
        if (self.seleccionado == -1):
            self.groupBoxcuenta.setEnabled(False)
        else:
            record = self.duenio.model.record(self.seleccionado.row())
            idDuenio = record.value("id_duenio").toInt()[0]
            nombreDuenio = record.value("apellido").toString()+', '+record.value("nombre").toString()
            self.uiDetalle = detalleCuenta_controlador(idDuenio, nombreDuenio)
            self.uiDetalle.widget.showMaximized() 
    
    def entrega(self):
        if (self.seleccionado == -1):
           self.groupBoxcuenta.setEnabled(False)
        else:
            record = self.duenio.model.record(self.seleccionado.row())
            idDuenio = record.value("id_duenio").toInt()[0]
            nombreDuenio = record.value("apellido").toString()+', '+record.value("nombre").toString()
            self.uiEntrega = entrega_controlador(self.labelsaldo, idDuenio, nombreDuenio)
            self.uiEntrega.widget.showMaximized()       
        
    def bajaMascota(self):
        if DEBUG: print "apreto el boton bajaMascota"
        seleccionado = self.tableViewMascota.selectedIndexes()[0]
        record = self.mascota.model.record(seleccionado.row())
        idAnimal = record.value("id_animal").toInt()[0]
        self.desactivarModificarBorrar()
        if seleccionado:
            respuesta = QMessageBox.question(None, "Message", "Esta seguro que desea borrar la esta mascota?","No","Si","" ,  False,  True)
            if respuesta:
               self.mascota.eliminarMascota(idAnimal) 
#                self.mascota.model.removeRow(seleccionado.row())
        else:
             QtGui.QMessageBox.critical(None,  "Seleccione una mascota", "Debe seleccionar una mascota para eliminar")
        self.ajustarDatosTabla()
        
    def guardar(self):
        if DEBUG: print "apreto el boton guardar"
        if self.seleccionado == -1 :
            if self.lineEditapellido.text() =="":
                QMessageBox.critical(None, "Alta de un nuevo cliente", "No hay ingresado los datos correspondientes")
                return False
            else:
                self.mapper.submit()
                self.widget.close()
                return True
        else:
                self.mapper.submit()
                self.widget.close()
                return True
        self.ajustarDatosTabla()        
    
    def mostrarSaldo(self):
        debeModelo = debe_modelo()
        haberModelo = haber_modelo()
        debe = debeModelo.obtenerTotal(self.id_duenio)
        haber = haberModelo.obtenerTotal(self.id_duenio)
        saldo = float(debe) - float(haber)
        if saldo > 0:
            self.labelsaldo.setText("<font style='color: red;'>"+str(saldo)+"</font>")
        else:
            self.labelsaldo.setText("<font style='color: black;'>"+str(saldo)+"</font>")
